﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using Baik.Interface.Framework;

namespace Baik.Interface.Token
{
    public interface IToken
    {
        TokenType Type { get; }
        string Value { get; }
        ILocation Location { get; }
    }

    public enum TokenType
    {
        Ident,
        Number,
        String,
        Symbol,
        WhiteSpace,
        OpenParen,
        CloseParen,
        Semicolon,
        OpenCurly,
        CloseCurly,
        OpenSquare,
        CloseSquare,
        Comma,
        Comment,
        DotToken,
        Colon,
        Return,
        True,
        False,
        Undefined
    }
    public interface ITokenizer
    {
        IQue<IToken> Tokenise(string code);
    }

    public interface ICodeFile
    {
        string FileName { get; set; }
        string this [int lineNumber] { get; }
    }
    public interface IFileLine
    {
        ICodeFile File { get; set; }
        int Line { get; set; }
        string Value { get; }
    }
    public interface ILocation
    {
        IFileLine Line { get; set; }
        int Char { get; set; }
    }

    
}
